﻿using BCCommon;
using BCDto.Sim.Admin.Admin;
using BCDto.TMS.MoveHouseConfig.MoveHouseServiceConfig;
using BCDto.TMS.MoveHouseConfig.MoveHouseServiceConfig.MoveHouseServiceConfigRequest;
using BCEntity.TMS.MoveHouseConfig.MoveHouseServiceConfig;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BCService.TMS.MoveHouseConfig.MoveHouseServiceConfig
{
    public interface IMoveHouseServiceConfigService
    {
        /// <summary>
        /// 创建
        /// </summary>
        /// <param name="requestDto">搬家服务信息</param>
        /// <param name="admin">管理员</param>
        /// <returns></returns>
        MoveHouseServiceConfigDto Create(MoveHouseServiceConfigRequestDto requestDto, AdminDto admin);
        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="moveHouseServiceConfigId">服务id</param>
        /// <param name="requestDto">搬家服务信息</param>
        /// <param name="admin">管理员</param>
        /// <returns></returns>
        MoveHouseServiceConfigDto Update(long moveHouseServiceConfigId, MoveHouseServiceConfigRequestDto requestDto,AdminDto admin);
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="moveHouseServiceConfigId">服务id</param>
        /// <returns></returns>
        bool Delete(long moveHouseServiceConfigId);
        /// <summary>
        /// 修改是否可用
        /// </summary>
        /// <param name="moveHouseServiceConfigId">服务id</param>
        /// <param name="isEnabled">是否可用</param>
        /// <param name="admin">管理员</param>
        /// <returns></returns>
        MoveHouseServiceConfigDto UpdateEnabled(long moveHouseServiceConfigId, bool isEnabled, AdminDto admin);
        /// <summary>
        /// 获取列表
        /// </summary>
        /// <param name="isEnabled">是否可用</param>
        /// <returns></returns>
        IEnumerable<MoveHouseServiceConfigDto> GetList(bool? isEnabled);
        /// <summary>
        /// 启用
        /// </summary>
        /// <param name="moveHouseServiceConfigId">服务id</param>
        /// <param name="admin">管理员</param>
        /// <returns></returns>
        MoveHouseServiceConfigDto Enabled(long moveHouseServiceConfigId, AdminDto admin);
        /// <summary>
        /// 禁用
        /// </summary>
        /// <param name="moveHouseServiceConfigId">服务id</param>
        /// <param name="admin">管理员</param>
        /// <returns></returns>
        MoveHouseServiceConfigDto Disabled(long moveHouseServiceConfigId, AdminDto admin);
        /// <summary>
        /// 获取服务列表(分页)
        /// </summary>
        /// <param name="isEnabled">是否可用</param>
        /// <param name="serviceName">服务名称</param>
        /// <param name="createStartDate">创建开始日期</param>
        /// <param name="createEndDate">创建结束日期</param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        PageableList<MoveHouseServiceConfigDto> Query(bool? isEnabled, string serviceName, DateTime? createStartDate,
             DateTime? createEndDate, int pageIndex, int pageSize);
    }
}
